Майнор "Интеллектуальный анализ данных"

Курс "Введение в анализ данных"

Лабораторная работа №2. Кластерный анализ.

Часть 1

В данном задании вам необходимо самостоятельно реализовать один из алгоритмов кластеризации.
По аналогии с классами в scikit-learn, нужно реализовать класс, наследуемый от Base Estimator.
Подробнее про реализацию своих моделей в scikit-learn: here.
В классе помимо __init__() нужно реализовать два метода:

Для удобства можно создавать дополнительные методы класса, которые будут вызываться в fit() или predict().
Функции для вычисления расстояний между объектами самим реализовывать не нужно, используйте реализации из scipy.

Вариант №3

Алгоритм K-Means.

Параметры:

Атрибуты:

Метод predict(): Новый объект определяется в кластер, центр которого расположен ближе всех к этому объекту.

Тестирование

Вашу реализацию необходимо сравнить с питоновской реализацией алгоритма из sklearn или scipy. Результаты кластеризации должны совпадать.
Также необходимо сравнить скорость работы вашей реализации и питоновской (это нормально, если ваша реализация будет медленнее).
Сравнение необходимо выполнить на наборе данных iris.

В первую очередь нам для тестирования алгоритмов необходимо провести стандартизацию данных. Для этого используем StandardScaler

Тестирование IslamK-Means

Визуализация полученных результатов

Запуск Scikit learn K-Means

Cделаем сравнение Scikit learn K-Means и IslamKMeans

Вывод

Как мы видим результаты обеих кластеризаций полностью идентичны. Конечно, ожидалось, что обычный K-Means работает намного быстрее, чем моя реализация. Также стоит отметить, что при различных запусках время может отличатся, я считаю, это зависим от рандома, так как в k-means он также имеется, это происходит при определении первой точки

Бонусное

Дополнительно вы можете поработать над эффективностью алгоритма по скорости и памяти, добавить поддержку многопоточности, или расширить базовый функционал.

Вариант №3

Часть 2

В данном задании вам предлагается проанализировать набор данных по различным городам США. Каждый город характеризуется следующими признаками:

Notes:


Задания:

  1. Выполните необходимую предобработку данных. Перед кластеризацией исключите из данных признаки Place, Long и Lat.
  1. Выполните кластеризацию иерархическим методом.
    Рассмотрите различные расстояния между объектами. Определите, какие следует использовать при кластеризации.
    Выполните кластеризацию с различными расстояниями между кластерами. Сравните результаты, сделайте выводы.
  1. Выполните кластеризацию методом Dbscan. Используйте расстояния между объектами, определенные в предыдущем пункте.
    Реализуйте эвристику (см. лекции) для выбора параметров алгоритма. Подберите подходящие параметры алгоритма.
  1. Выполните кластеризацию методом kmeans. Определите наилучшее (на ваш взгляд) число кластеров.
  1. (Бонусное) Выполните кластеризацию другими методами. Например, HDBSCAN или алгоритмы, реализованные в scikit-learn.
  1. В результате выполнения предыдущих пунктов вы должны получить 4 или больше разбиений объектов (по одному на каждый метод). Сравните их между собой, сделайте выводы о сходствах и различиях.
    Оцените результаты каждой кластеризации, используя метрики, рассмотренные на занятиях (Silhouette и прочие).
  1. Выберите одно разбиение, наиболее подходящее на ваш взгляд. Предложите интерпретацию полученным кластерам или покажите, что этого сделать нельзя.
  1. Оцените, как полученные кластеры распределены географически.
    Оцените, как полученные кластеры распределены по штатам. Можно ли выделить какую-то зависимость (территориальную или для штатов)?
    (Бонусное) Провизуализируйте распределение на карте США.

Задание 1

Выполним препроцессинг данных

Выполним стандартизацию данных

Задание 2

Иерархическая кластеризация

Method: Median || Metric: Euclidean

Method: Weighted || Metric: CityBlock

Method: Weighted || Metric: Euclidean

Method: Complete || Metric: Euclidean

Method: Complete || Metric: Cos

Method: Complete || Metric: CityBlock

Method: Ward || Metric: Euclidean

Оценим и сравним результаты работ алгоритма с различными гиперпараметрами

Оценка по метрике silhouette_score

Оценка по метрике davies_bouldin_score

Вывод

1) Данные плохо кластеризуются с помощью иерархической кластеризации, так многие попытки кластеризаций с различными метриками имеют плохохую оценку или плохое распределение.

2) Очень плохой результат выдал метод: median и метрика: euclidean, так как объекты - один большой кластер и оценки не такие хорошие

3) Нормальный результат показал метод: ward и метрика: euclidean, так имеется хорошее распределение в кластеров, они визуально заметны. Также неплохие оценки метрики

4) Также можно сказать о complete-cityblock и complete-euclidean. У одного кластера очень много элементов, даже можно сказать большинство. Хотя в complete-cityblock разделение получше, распределение более равномерное.

Задание 3

DBSCAN

Euclidean

CityBlock

Вывод

1) На самом деле DBSCAN не пдоходит для кластеризации данных таких форм. Ему необходимы определенные геотметр формы. Очень сложно найти формму для наших данных.

2) metric= cityblock в среднем показал очень плохие результаты. Так как это метрика многие точки просто помещает в outliers. Конечно, повышение epsilon и уменьшение min_samples дает определенные результаты, но они не столь ощутимы

3) Как по мне, наиболее хорошим вариантом является metric = euclidean eps=2.5, min_samples=2. Однако все же, хотя выбросов стало и меньше, но многие данные были помещены в один кластер, что не есть хорошо

Задание 4

Вывод

1) Подходящее количество кластеров для нашего датасета - 5, так как на этом месте наибольшой изгиб

2) Pairplot показал, что имеются 2 среднего размера кластера и 3 больших

Задание 5

OPTICS

Вывод:

1) OPTICS выделила 5 кластеров, такой же результат показал K-Means

2) 4 маленьких кластера и 1 огромный

3) Нельзя сделать однозначного вывода по кластеризации

Задание 6

Вывод

1) Для оценки использовали метрики silhouette_score, davies_bouldin_score, calinski_harabasz_score

2) Hierarchical - Method: Ward || Metric: Euclidean в среднем показал неплохой результат, однако в Davies Bouldin значение далеко от 0

3) K-Means исходя из оценок показал самый лучшие результаты, скорее всего мы его возьмем за основной, также Calinski Harabasz близок к 100, что конечно хорошо

4) DBSCAN в некоторых случаях показал хороший результат, однако в Calinski Harabasz полностью провалился. Также silhouette_score показал, что метрика из всех близка к 1, что значит результат хороший, хотя не сказать, что идеальный

5) OPTICS при всех метриках показал наихудший результат, особенно в silhouette_score и calinski_harabasz_score, так как метрика близка к -1 в первом случае и очень далека от 100 во втором случае

Самое лучшее разбиение - K-Means

Задание 7

Разделим по данным наши кластеры и рассмотрим каждый из них

Кластер 0

Вывод по кластеру 0:

1) Хорошая экономика для мест

2) Маленькое население

3) Плохая медицина

Кластер 1

Вывод по кластеру

1) Высокое значение Transp, HealthCare и Arts

2) Высокая/ Cредняя стоимость жилого помещения

3) Также высокая популяция

Скореее всего это большие города, но не слишком. По типу Нижнего Новгорода

Кластер 2

Вывод по кластеру

1) Высокая стоимость жилого помещения

2) Самый маленький кластер из всех имеющихся

3) Высокий уровень бандитизма

4) Хороший уровень арт объектов

Судя по всему, это одни из самых больших мегаполисов США

Кластер 3

Вывод по кластеру

1) В среднем низкий уровень здравоохранения

2) Низкий уровень бандитизма

3) Низкий уровень экономики

Скорее всего, это маленькие городки

Кластер 4

Вывод по кластеру

1) Высокая стоимость жилого помещения

2) Среднее высокое значение по транспорту и искусству

3) Невысокий уровень криминала

Наверное, это города близкие к мегаполисам

Задание 8

Вывод

1) Как мы видим, действительно, оранжевые - это крупнейшие мегаполисы США (Washington, Detroit ...)

2) Голубые это не большие городки, которые находятся в основном в центре и рядом с крупными городами

3) Что интересно, города красного класстера в основном сосредоточены с правой части карты и их большое количество в Техасе и Майами. Возможно, есть какая-то географическая зависимость

4) К кластерам черного цвета относятся города, которые находятся вплотную к большим мегаполисам или сами являются каким-либо городским центром. Наши ожидания из 7го задания подтвердились

5) Опять же зеленым отмечены в основном средние городки, хотя не такие маленькие как синие, зеленые намного крупнее, например Аталанта, Мемфис и т.д.

На самом деле кластеризация разделила наши данные более или менее правдоподно и логично.